package com.yuyou.tas.report.service;

import com.yuyou.tas.report.vo.req.*;
import com.yuyou.tas.report.vo.resp.ExamModelBlockVo;
import com.yuyou.tas.report.vo.resp.ExamModelDetailVo;
import com.yuyou.tas.report.vo.resp.ExamModelSimpleVo;
import com.yuyou.tas.report.vo.resp.StudentRecordVo;
import com.yuyou.tas.service.api.report.dto.ExamModelDTO;
import com.yuyou.tas.service.api.report.dto.ExamModelVo;
import com.yuyou.tas.service.api.report.entity.ExamModel;
import com.yuyou.tas.service.api.report.entity.ExamModelActivity;
import com.yuyou.tas.service.api.report.entity.ExamModelQues;
import com.yuyou.tas.util.bean.LoginRedisObj;
import com.yuyou.tas.util.bean.Pagination;
import com.yuyou.tas.util.bean.ResBoolSimpleInfo;

import java.util.List;

/**
 * Created by yujin.liu on 2018/9/20.
 */
public interface IExamModelService {

    void saveExamImport(Long organId, List<ExamExcel> examExcelList) throws Exception;

    List<ExamModelVo> selectByOrganId(Long organId);

    List<ExamModelQues> selectQuesByOrganId(Long organId);

    ExamModel selectByPrimaryKey(Long id);

    List<ExamModel> selectModelByTrimester(Long trimesterId);

    List<ExamModel> selectModelByLevel(Long levelId);

    int findExamModelCount(Pagination<ExamModelDTO> queryPgn);

    List<ExamModelDTO> findExamModelPageList(Pagination<ExamModelDTO> queryPgn);

    void deleteExamModelById(Long id);

    ResBoolSimpleInfo addExamModel(ExamModelAdd examModelAdd, LoginRedisObj loginObj);

    ResBoolSimpleInfo<String> editExamModel(ExamModelEdit examModelEdit, LoginRedisObj loginObj);

    ResBoolSimpleInfo<String> addLessonClass2ExamModel(Long examModelId, List<Long> lessonClassIds, LoginRedisObj loginObj);

    ExamModelDetailVo detailExamModel(Long examModelId, LoginRedisObj loginObj);

    ResBoolSimpleInfo addBlock2ExamModel(Long examModelId, List<ExamModelBlockVo> examModelBlockVoList);

    List<ExamModelBlockVo> examModelBlockList(Long examModelId);

    /**
     * 获取班级适用模版列表
     * @param classId
     * @param organId
     * @param levelId
     * @param range_type
     * @param type
     * @param activityId
     * @return
     * @throws Exception
     */
    List<ExamModelSimpleVo> classExamModelList(Long classId , Long organId ,Long levelId , Integer range_type , Integer type , Long activityId) throws Exception;

    int findExamModelActivityCount(Pagination<ExamModelActivity> queryPgn);

    List<ExamModelActivity> findExamModelActivityPageList(Pagination<ExamModelActivity> queryPgn);

    ExamModelActivity addExamModelActivity(ExamModelActivityAdd examModelActivityAdd, LoginRedisObj loginObj);

    void editExamModelActivity(ExamModelActivityEdit examModelActivityEdit, LoginRedisObj loginObj);

    /**
     * 通过学生id和模版id获取录分记录
     * @param examId
     * @param stuId
     * @return
     */
    StudentRecordVo detailExamModelChange(Long examId , Long stuId);
}
